<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=`, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // async 及 await 需要注意的地方
    // 1.会等待resolve或是reject之后执行下面的代码
    // function fn1 () {
    //   return new Promise(resolve => {
    //     setTimeout(() => {
    //       resolve("chen");
    //     }, 2000);
    //   })
    // }
    // ; (async function () {
    //   let res = await fn1();
    //   console.log(res);
    //   console.log(222);
    // })();

    // 2.await之后是异步代码，之前是同步代码，await模拟then的执行，await之后是微任务
    // setTimeout(() => {
    //   console.log(555);
    // });
    // async function fn () {
    //   console.log(111);
    //   await new Promise(resolve => {
    //     resolve(333)
    //   })
    //   console.log(444);
    // }
    // fn();
    // console.log(222);

    // 3.async函数的返还值和then的返还值一致
    // async function fn () {
    //   await Promise.resolve(111);
    //   // return 111;
    //   // return Promise.resolve("success")
    //   // throw new Error("错了")
    // }
    // let res = fn();
    // console.log(res);

    // 4.await 只能出现在async函数里，且不能出现函数嵌套；
    // 错误的写法
    // function fn () {
    //   await Promise.resolve(111);
    // }
    // fn();

  </script>
</body>

</html>